Back


Goal 9: Industry, innovation and infrastructure

Researchers


FN 9.5.2 Number of persons with PhD and researcher education
# Import
UDXISCPROD_raw <-
  statgl_url("UDXISCPROD", lang = language) %>% 
  statgl_fetch("level of education" = 80,
               gender               = px_all(),
               time                 = px_all(),
               .col_code            = TRUE) %>% 
    as_tibble()
 
# Transform
UDXISCPROD <- 
  UDXISCPROD_raw %>% 
  mutate(
    time   = time %>% make_date(),
    gender = gender %>% fct_inorder()
    )

# Plot
UDXISCPROD %>% 
  ggplot(aes(
    x    = time,
    y    = value,
    fill = gender
  )) +
  geom_col() +
  #facet_wrap(~ gender) +
  theme_statgl() + 
  scale_fill_statgl(reverse = TRUE) +
  theme(plot.margin = margin(10, 10, 10, 10)) +
  labs(
    title   = sdg9$figs$fig1$title[language],
    x       = " ",
    y       = sdg9$figs$fig1$y_lab[language],
    fill    = " ",
    caption = sdg9$figs$fig1$cap[language]
  )

StatBank

Method


# Transform
UDXISCPROD <- 
  UDXISCPROD_raw %>% 
  filter(time >= year(Sys.time()) - 5) %>% 
  #arrange(desc(time)) %>% 
  mutate(time = time %>% factor(levels = unique(time))) %>% 
  spread(3, 4)

# Table
UDXISCPROD %>% 
  select(-1) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = UDXISCPROD[[1]] %>% table())
2019 2020 2021 2022
Phd. Programmes
Men 29 27 30 24
Women 24 27 30 30

Business statistics


GS Distribution of businesses according to interval of aggregate salaries and shares
# Import
ESD6A_raw <-
  statgl_url("ESX6A", lang = language) %>%
  statgl_fetch(
    unit                                        = "N",
    time                                        = px_all(),
    "interval of aggregate salaries and shares" = c(LETTERS[1:8], "K"),
    .col_code                                   = TRUE
  ) %>% 
    as_tibble()

# transform
ESD6A <- 
  ESD6A_raw %>%
  mutate(
    `interval of aggregate salaries and shares` = `interval of aggregate salaries and shares` %>% str_remove_all("[A-K]|\\.") %>% trimws() %>% fct_inorder() %>% fct_rev(),
    time = time %>% make_date()
  )


# legend ...
fill_lab <- colnames(statgl_url("ESX6A", lang = language) %>% statgl_fetch() %>% as_tibble())[1] %>% str_to_sentence()

# Plot
ESD6A %>% 
  ggplot(aes(
    x    = time,
    y    = value,
    fill = `interval of aggregate salaries and shares`
  )) +
  geom_area() +
  theme_statgl() +
  scale_fill_statgl(reverse = TRUE, guide = guide_legend(reverse = TRUE)) +
  labs(
    title    = sdg9$figs$fig2$title[language],
    subtitle = sdg9$figs$fig2$sub[language],
    x        = " ",
    y        = ESD6A[["unit"]][1],
    fill     = fill_lab,
    caption  = sdg9$figs$fig2$cap[language]
  )

StatBank

Method


# col lab
col_lab        <- 1
names(col_lab) <- fill_lab


# transform
ESD6A <- 
  ESD6A_raw %>%
  mutate(
    `interval of aggregate salaries and shares` = `interval of aggregate salaries and shares` %>% 
      str_remove_all("[A-K]|\\.") %>% 
      trimws() %>% 
      fct_inorder() %>% 
      fct_rev(),
    ) %>% 
  filter(time >= Sys.time() %>% year() - 5) %>% 
  mutate(time = time %>% fct_inorder() %>% fct_rev()) %>% 
  spread(time, value) %>% 
  arrange(desc(`interval of aggregate salaries and shares`)) %>% 
  rename(col_lab)

# table
ESD6A %>% 
  select(-unit) %>% 
  statgl_table() %>% 
  add_footnote(ESD6A[["unit"]][1], notation = "symbol")
Interval of aggregate salaries and shares 2021 2020 2019
00-10 708 620 524
10-50 1.360 1.020 1.220
50-100 1.114 922 982
100-250 1.636 1.502 1.912
250-500 1.226 1.282 1.226
500-1000 744 736 762
1000-5000 954 958 964
5000-10000 162 168 186
Over 10000 222 200 198
* Number of businesses



# Import
ESX5A_raw <-
  statgl_url("ESX5A", lang = language) %>%
  statgl_fetch(
    municipality                                = 1:5,
    "interval of aggregate salaries and shares" = c(LETTERS[1:8], "K"),
    unit                                        = "N",
    time                                        = px_all(),
    .col_code                                   = TRUE
    ) %>% 
  as_tibble()

ESX5A <- 
  ESX5A_raw %>% 
  rename(lonsum = `interval of aggregate salaries and shares`) %>% 
  mutate(
    time   = time %>% make_date(),
    lonsum = lonsum %>% str_remove_all("[A-K]|\\.") %>% trimws() %>% fct_inorder() %>% fct_rev()
  )


# Plot
ESX5A %>% 
  ggplot(aes(
    x    = time,
    y    = value,
    fill = lonsum
  )) +
  geom_area() +
  facet_wrap(~ municipality, scales = "free") +
  theme_statgl() + 
  scale_fill_statgl(reverse = TRUE, guide = guide_legend(reverse = TRUE)) +
  labs(
    title    = sdg9$figs$fig3$title[language],
    subtitle = sdg9$figs$fig3$sub[language],
    x        = " ",
    y        = ESX5A[[3]][1],
    fill     = fill_lab,
    caption  = sdg9$figs$fig3$cap[language]
  )

StatBank

Method


ESX5A <- 
  ESX5A_raw %>% 
  rename(lonsum = `interval of aggregate salaries and shares`) %>% 
  filter(time >= Sys.time() %>% year() - 5) %>% 
  mutate(
    time         = time %>% fct_inorder() %>% fct_rev(),
    municipality = municipality %>% fct_inorder(),
    lonsum       = lonsum %>% str_remove_all("[A-K]|\\.") %>% trimws() %>% fct_inorder() %>% fct_rev()
    ) %>% 
  spread(time, value) %>% 
  arrange(municipality, desc(lonsum))

ESX5A %>% 
  select(-c(municipality, unit)) %>% 
  rename(col_lab) %>% 
  statgl_table() %>% 
  pack_rows(index = ESX5A[["municipality"]] %>% table()) %>% 
  add_footnote(ESX5A[["unit"]][1], notation = "symbol")
Interval of aggregate salaries and shares 2021 2020 2019
Kommune Kujalleq
00-10 37 36 31
10-50 70 45 50
50-100 58 48 46
100-250 62 71 83
250-500 45 33 49
500-1000 26 25 31
1000-5000 35 35 35
5000-10000 7 5 4
Over 10000 4 5 5
Kommuneqarfik Sermersooq
00-10 84 94 93
10-50 173 134 206
50-100 145 116 136
100-250 213 189 227
250-500 174 165 168
500-1000 150 141 143
1000-5000 243 247 248
5000-10000 42 45 52
Over 10000 78 69 68
Qeqqata Kommunia
00-10 67 51 45
10-50 105 66 85
50-100 86 66 72
100-250 97 98 121
250-500 64 70 65
500-1000 39 43 39
1000-5000 76 71 73
5000-10000 16 17 14
Over 10000 9 9 10
Kommune Qeqertalik
00-10 76 43 32
10-50 93 95 95
50-100 60 55 73
100-250 86 84 126
250-500 50 44 50
500-1000 17 20 25
1000-5000 22 23 25
5000-10000 5 5 7
Over 10000 3 2 1
Avannaata Kommunia
00-10 70 65 52
10-50 178 152 163
50-100 176 169 152
100-250 312 288 381
250-500 251 309 267
500-1000 120 122 128
1000-5000 72 75 77
5000-10000 7 7 10
Over 10000 11 10 12
* Number of businesses

Export of other than fish


GS Fisheries’ share of total exports
# Import
IEXSITC_raw <-
  statgl_url("IEXSITC", lang = language) %>% 
  statgl_fetch(quarter     = 0,
               processing  = c("G11", "3"),
               transaction = 2,
               time        = px_all(),
               .col_code   = TRUE
               ) %>% 
    as_tibble()

# Transform
step <-
  IEXSITC_raw %>% 
  mutate(processing = processing %>% str_remove_all("[:digit:]|\\-") %>% trimws(which = "left")) %>% 
  arrange(time, processing)

IEXSITC <- 
  step %>% 
  mutate(export = fct_reorder(processing, -value, sum, na.rm = TRUE),
         time = make_date(time),
         value = value / 10^9) 
# Plot
IEXSITC %>% 
  ggplot(aes(
    x = time,
    y = value, 
    fill = export
  )) +
  geom_area(position = "identity") +
  theme_statgl() +
  scale_fill_statgl(reverse = TRUE) +
  labs(
    title = sdg9$figs$fig4$title[language],
    y     = sdg9$figs$fig4$y_lab[language],
    x     = " ",
    fill  = " ",
    caption = sdg9$figs$fig4$cap[language]
  )

StatBank

Method


# Transform
IEXSITC <- 
  step %>% 
  mutate(
    export = fct_reorder(processing, -value, sum, na.rm = TRUE),
    value = value / 10^9
    ) 

tab <- 
  IEXSITC %>% 
  select(-2, -3) %>% 
  #arrange(desc(time)) %>% 
  filter(time >= year(Sys.time()) - 5) %>% 
  mutate(time = time %>% factor(levels = unique(time))) %>% 
  spread(time, value)

# Table
tab %>% 
  select(-1) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = tab[[1]] %>% table()) %>% 
  row_spec(1, bold = TRUE) %>% 
  add_footnote(sdg9$figs$fig4$foot[language], notation = "symbol")
2019 2020 2021 2022 2023
Whole year
Total 5,52 5,30 5,06 6,07 6,01
Fish (Not Marine Mammals), Crustaceans, Molluscs And Aquatic Invertebrates, And Preparations Thereo 5,06 4,85 4,78 5,83 5,86
* Billons (DKK)
# Import
IEXSITC_raw <-
  statgl_url("IEXSITC", lang = language) %>%
  statgl_fetch(processing  = px_all(),
               transaction = 2,
               time        = px_all(),
               .col_code   = TRUE
               ) %>% 
    as_tibble()

# Transform
IEXSITC <- 
  IEXSITC_raw %>% 
  filter(processing %in% unique(IEXSITC_raw[[1]])[c(16, 26, 45, 55, 65, 74)]) %>% 
  mutate(
    time       = time %>% make_date(),
    value      = value / 10^6,
    processing = processing %>% str_remove_all("[:digit:]|\\-") %>% trimws()
    )

# Plot
IEXSITC %>% 
  ggplot(aes(
    x = time, 
    y = value,
    fill = processing
    )) +
  geom_area() + 
  facet_wrap(~ processing, labeller = label_wrap_gen(30)) +
  scale_fill_statgl() +
  theme_statgl() +
  theme(plot.margin = margin(10, 10, 10, 10)) +
  theme(legend.position = "none") +
  labs(
    title = sdg9$figs$fig5$title[language],
    x = " ", 
    y = sdg9$figs$fig5$y_lab[language],
    fill = " ",
    caption = sdg9$figs$fig4$cap[language]
 )

StatBank

Method


# Transform
IEXSITC <- 
  IEXSITC_raw %>% 
  filter(processing %in% unique(IEXSITC_raw[[1]])[c(16, 26, 45, 55, 65, 74)],
         time >= year(Sys.time()) -7,
         value != "NA") %>% 
  #arrange(desc(time)) %>% 
  mutate(
    value      = round(value / 10^6, 3),
    processing = processing %>% str_remove_all("[:digit:]|\\-") %>% trimws(),
    time       = time %>% factor(levels = unique(time))
    ) %>% 
  spread(3,4)

# Table
IEXSITC %>% 
  select(-2) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = IEXSITC[[2]] %>% str_to_title() %>% table()) %>% 
  add_footnote(sdg9$figs$fig5$foot[language], notation = "symbol")
2017 2018 2019 2020 2021 2022 2023
Export
Machinery and transport equipment, total 235,614 530,455 315,276 326,187 182,999 179,201 64,002
Manufactured products mainlysemimanufactured products, total 6,287 13,285 5,699 13,193 8,149 16,420 20,536
Manufactured products, total 18,718 11,818 11,720 5,117 4,683 16,185 26,685
Mineral fuels and lubricants etc., total 0,009 0,002 0,004 0,079 0,002 0,004 0,017
Miscellaneous articles and transactions, total 123,768 124,994 108,924 91,546 74,050 9,617 19,494
Raw materials, inedible, total 3,476 4,605 7,882 6,824 7,135 11,907 11,294
* Billions (DKK)

Industry’s gross value added


FN 9.2.1 Industry’s gross value added
# Import
BVT <-
  statgl_url("NRX0418", lang = language) %>% 
  statgl_fetch("units"    = "L",
               "industry" = px_all(),
               "time"     = px_all(),
               .col_code  = TRUE
               ) %>% 
    as_tibble() %>% 
  mutate(value = value/1000)


BVT <- BVT %>%  filter(industry %in% unique(BVT %>% pull(2))[9])


BNP <-
  statgl_url("NRX10", lang = language) %>% 
  statgl_fetch("units"   = "L",
               "account" = "02",
               "Aar"    = px_all(),
               .col_code = TRUE
               ) %>% 
    as_tibble() %>% 
  rename("time" = Aar)

# Transform
industry <- 
  BVT %>% 
  rename("BVT" = 4) %>% 
  left_join(BNP %>% rename("BNP" = 4)) %>% 
  mutate(value = BVT / BNP,
         time = time %>% as.numeric())

# Plot
industry %>% 
  ggplot(aes(
    x     = time,
    y     = value,
    color = units
  )) +
  geom_line(size = 2) +
  scale_y_continuous(labels = scales:: percent) +
  theme_statgl() + 
  scale_color_statgl() +
  theme(legend.position = "none") +
  labs(
    title    = sdg9$figs$fig6$title[language],
    subtitle = industry[[1]][1],
    x        = " ",
    y        = sdg9$figs$fig6$y_lab[language],
    caption  = sdg9$figs$fig6$cap[language]
  )

Statbank, gross value added

Statbank, GDP per capita


tab <- 
  industry %>% 
  select(industry, time, value) %>% 
  mutate(
    industry = industry %>% str_remove_all("C "),
    value    = value * 100
    ) %>% 
  #arrange(desc(time)) %>% 
  filter(time >= max(time) - 5) %>% 
  mutate(time = time %>% as.character() %>%  fct_inorder()) %>% 
  mutate(value = value %>% round(2)) %>% 
  mutate(value = paste0(value, "%")) %>% 
  spread(time, value)

tab %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  add_footnote(sdg9$figs$fig6$foot[language], notation = "symbol")
2016 2017 2018 2019 2020 2021
Industry 0.26% 0.14% 0.29% 0.19% 0.19% 0.16%
* Share of GDP per capita

Industry employment


FN 9.2.2 Industry employment
# Import
NRX0518_raw <-
  statgl_url("NRX0518", lang = language) %>% 
  statgl_fetch(
    "units"    = c("TOT", "C"),
    "industry" = "BES",
    "time"     = px_all(),
    .col_code  = TRUE
    ) %>% 
    as_tibble()


NRX0518 <- 
  NRX0518_raw %>% 
  spread(units, value) %>% 
  rename("indu" = 3, "total" = 4) %>% 
  mutate(
    value = indu / total,
    time = time %>% as.numeric()
    )



NRX0518 %>% 
  ggplot(aes(
    x = time,
    y = value,
    color = industry
  )) +
  geom_line(size = 2) +
  expand_limits(y = 0) +
  scale_y_continuous(labels  = scales::percent_format(scale = 100, accuracy = 1, big.mark = ".",
  decimal.mark = ",")) +
  theme_statgl() + 
  scale_color_statgl() +
  theme(legend.position = "none") +
  labs(
    title = sdg9$figs$fig7$title[language],
    x = " ",
    y = sdg9$figs$fig7$y_lab[language],
    caption = sdg9$figs$fig7$cap[language]
  )

StatBank


NRX0518 %>% 
  select(time, value) %>% 
  #arrange(desc(time)) %>% 
  filter(time >= max(time) - 5) %>% 
  mutate(time = time %>% as.character() %>%  fct_inorder()) %>% 
  mutate(
    value = value * 100,
    value = value %>% round(1)
    ) %>% 
  spread(time, value) %>% 
  statgl_table() %>% 
  add_footnote(sdg9$figs$fig7$foot[language], notation = "symbol")
2016 2017 2018 2019 2020 2021
5,8 5,7 5,8 5,4 5,4 5,5
* Percentage of total employment